﻿using System.Windows.Media.Imaging;

namespace Brjnk.Maps
{
    /// <summary>
    /// Vyrovnávací paměť pro mapové dlaždice. (Pro ukládání používá OrderedDictionary)
    /// </summary>
    internal class RamCache
    {
        private System.Collections.Specialized.OrderedDictionary data;

        private int pos = 0;
        private int size;

        public RamCache(int size)
        {
            data = new System.Collections.Specialized.OrderedDictionary(size);
            this.size = size;
        }

        public void AddTile(TileId id, BitmapImage bitmap)
        {
            if (!data.Contains(id))
            {
                data.Insert(pos, id, bitmap);
                pos++;
                if (pos == size) pos = 0;
            }
            else data[id] = bitmap;
        }

        /// <summary>
        /// Vrátí mapovou dlaždici. Pokud není dostupná, vrátí null
        /// </summary>
        public BitmapImage GetTile(TileId id)
        {
            return data[id] as BitmapImage;
        }
    }
}